map:[fun:[Dynamic -> Dynamic] * lst:[Dynamic] -> [Dynamic]] <-
	match lst with
	      x::xs => (fun x)::(map fun xs)
	      else  => []
	/match;

fold_right:[fun:[Dynamic * Dynamic -> Dynamic] * def:Dynamic * lst:[Dynamic] -> [Dynamic]] <-
	match lst with
	      x::xs => (fun x (fold_right fun def xs))
              else  => def
	/match;

range:[from:Int * to:Int -> [Int]] <-
	if from = to
	then []
	else from::(range (from + 1) to)
	/if;

range_to:[to:Int -> [Int]] <- 
	range 0 to;
